/*
 *
 * 名称：方案窗口
 * 功能：奇门遁甲断局方案配置窗口
 * 作者：清河张
 * 时间：2025.05.11
 *
 */

#ifndef FANGANWIN_H
#define FANGANWIN_H

#include <QDialog>
#include <QTableWidget>
#include <QString>
#include "fangan.h"

class Ui_FANGANWIN;

namespace QMDJ {

class FANGANWIN : public QDialog
{
    Q_OBJECT

public:
    explicit FANGANWIN(QWidget *parent, FANGAN& fangan);
    ~FANGANWIN();

    //加载指定方案
    void load(qint64 id);
    //保存方案
    void store();
    //方案名
    QString name() const;

    //控件回调
private slots:
    void on_ranyePushButton_clicked();

    void on_quyePushButton_clicked();

    void on_buzhiPushButton_clicked();

    void on_xiezhiPushButton_clicked();

    void on_xiaozhiPushButton_clicked();

    void on_xuzhiPushButton_clicked();

    void on_ysTableWidget_cellChanged(int row, int column);

    void on_gxTableWidget_cellChanged(int row, int column);

    void on_gjTableWidget_cellChanged(int row, int column);

    void on_xgTableWidget_cellChanged(int row, int column);

    void on_gjTableWidget_cellClicked(int row, int column);

    void on_ysTableWidget_cellClicked(int row, int column);

    void on_gxTableWidget_cellClicked(int row, int column);

    void on_xgTableWidget_cellClicked(int row, int column);

    void on_curCellLineEdit_textEdited(const QString &arg1);

    void on_chakeyingToolButton_clicked();
private:

    //保存输入框
    void store_input(const QString& input);

    void keyPressEvent(QKeyEvent *event) override;

    //初始化格局、星宫、用神、关系
    void initgj();
    void initxg();
    void initys();
    void initgx();

    //加载格局、星宫、用神、关系
    void loadgj();
    void loadxg();
    void loadys();
    void loadgx();

    //保存格局、星宫、用神、关系
    void storegj();
    void storexg();
    void storegx();
    void storeys();

    //追加用神
    void appendys(int pf = -1, const QString& mh = "", int bl = -1, int bz = -1,
                  const QString& x = "", const QString& k = "" , const QString& p = "",
                  const QString& m = "", const QString& xy = "");

    //追加关系
    void appendgx(int pf1, int gxs, int pf2, const QString& xinagyi = "");

    //指定字段开始，复制到新加一行
    void clone_new_row(QTableWidget*, int);
    //指定字段开始，复制到下一行
    void clone_next_row(QTableWidget*, int);

    Ui_FANGANWIN *ui;
    FANGAN& _fangan;
    QJsonObject _jsonObj;
};

};
#endif // FANGANWIN_H
